Архитектура К-подобного языка и его операционной среды
Я пришел к выводу, что лучше всего объединить весь базовый инструментарий минимального рантайма в виде синтаксических расширений, которые могут биндится как на языковые конструкции типа cond lambda app так и на слоты в контекстах. Языковое пространство включает в себя несколько синтаксическиз групп: Нетипизированное Лямбда Исчисление (нормальный порядок бета редукции), Векторный DSL (векторизируемый с MMX, SSE, пока без GPU бекенда), Хендлеры системы эффектов, а также рантайм операционной среды: доступ к очередям (цикличиским буферам — split/join, RAM — free/alloc), и управление CPS-программами (задачи, CPU — spawn,kill). Есть еще IO задачи, и Таймеры написанны чисто на Rust, в отличие от задач, написанных на К-образном языке О. O — здесь символ Enso, и символ кольцевой очереди. Все программы написанные на О могут паралелиться и исполняться на пуле потоков, жестко закрепленных на ядрах с помощью hwloc.
Несмотря на растовскую имплементацию — этот подход можно применять на любом языке. Так как во всех языках уже есть как минимум System F, есть везде стримы на комбинаторах, в Java, C#, Scala, Rust, C++11 вы можете писать в таком стиле и навешивать на фасад любые синтаксисы. В динамически типизированных языках все это выглядит компактнее, так как не нужна прелюдия типов. Но в динамически типизированных не получишь бесплатную векторизацию и прочие высокотехнологичные оптимизации.
O Интерпретатор растет:
Кобминаторы стримов посортированы по каталогах (по группам синтаксических расширений):